[블랙잭 게임 미션] 김대욱 미션 제출합니다.#2
Conversation
|
안녕하세요 대욱님! 타지에서 미션 진행하시느라 힘드실 것 같습니다 🥲 특수한 상황이니, 대욱님은 미션 기간을 하루 더 연장하도록 하겠습니다. |
woosung1223
left a comment
There was a problem hiding this comment.
안녕하세요 대욱님!
타지에서 시간 없으실텐데도 열심히 잘 해주시고 계십니다!
코드 짜는 실력은 이제 확실히 점차 늘어가는게 보이는데, 아직 기능이 완성이 되진 않아서 그 부분은 아쉽네요!
리뷰는 최소한으로 남겨드렸고, 추후 구현하시면 다시 확인해보겠습니다!
| - 플레이어가 카드를 더 받을지 받지 않을지 y 혹은 n으로 입력받는다. | ||
|
|
||
| ## 입력시 예외처리 | ||
| - 플레이어의 이름을 입력받을 때 타입이 맞지 않으면 예외처리 |
There was a problem hiding this comment.
타입이 맞지 않는다라는 것은 구현 세부적인 내용이네요! 다른 말로는 개발자가 아니라면 '타입이 뭐지?!' 라는 생각이 들 수 있습니다.
기능 목록은 정말로 광화문에 있는 사람 아무나 데려왔을 때에도 이해하는게 가능할 정도로 쉽게 작성하도록 연습하면 좋습니다!
'프로그램을 위한 기능 명세서'를 작성한다기보다, '서비스에 대한 기능 명세서'를 작성한다는 느낌으로 해보시면 좋을 것 같아요 😄
| ## 블랙잭 게임 구현 | ||
| - 카드의 숫자 계산은 카드 숫자를 기본으로 ace는 1 또는 11로 계산한다. | ||
| - king, queen, jack은 각각 10으로 계산한다. | ||
| - 게임을 시작하면 플레이어는 두장의 카드를 지급 받으며, 두 장의 카드 숫자가 21을 초과하지 않을 경우에는 카드를 더 뽑을 수 있음. | ||
| - 딜러는 처음에 받은 2장의 합계가 16이하면 반드시 1장의 카드를 추가로 뽑음. | ||
| - 게임의 승패는 딜러보다 높으면서 카드 숫자의 총합이 21을 넘지 않음으로 구분. | ||
|
|
||
| ## 출력 | ||
| - 게임에 참여할 사람의 입력하라는 문구 출력 | ||
| - 플레이 시작시 2장을 나누었다는 문구 출력 | ||
| - 플레이 시작시 딜러와 플레이어들이 받은 카드들을 출력 | ||
| - 각 플레이어가 카드를 더 받을지를 입력하라는 문구 출력 | ||
| - 딜러와 플레이어들이 카드를 받을 때 마다 각자의 카드 소유 현황을 출력. | ||
| - 딜러가 16이하라 카드를 한장 더 받는 경우 그 문구를 출력. | ||
| - 게임의 결과 딜러와 플레이어들의 카드 소유 현황과 점수의 합을 출력. | ||
| - 최종 승패를 출력. No newline at end of file |
There was a problem hiding this comment.
기능목록 저번 미션과 비교해서 정말 많이 좋아졌습니다!
이제 구조 자체는 손볼 곳이 없다는 생각이 듭니다! 💯
| private List<Player> winners = new ArrayList<>(); | ||
| public BlackJackGame(List<String> splitPlayerNames) { |
There was a problem hiding this comment.
인스턴스 필드와 생성자 사이에 개행을 넣어주세요!
| private Dealer dealer = new Dealer(); | ||
| private List<Player> players; | ||
| private CardDeck cardDeck = new CardDeck(); |
There was a problem hiding this comment.
개인적인 생각인데, 필드에서 직접적으로 객체를 직접적으로 초기화하는 경우는 크게 없는 것 같아요.
우선 구현체를 고정시켜버린다는 점에서 유연성이 낮아지는게 큰 이유라고 생각합니다. (가령 Dealer를 상속받은 CustomDealer로 블랙잭 게임을 진행하고 싶다면 위 구조는 변경되어야 하겠죠)
There was a problem hiding this comment.
아 그럼 생성자에서 초기화를 하면 된다는 뜻인가요? 수정했습니다.
| public List<Player> getWinner(){ | ||
| gattherWinner(players); | ||
| return winners; | ||
| } |
There was a problem hiding this comment.
딜러의 승패도 출력되어야 하니, 추후 getDealerStatus 등과 같은 메소드가 필요하겠네요!
| import java.util.ArrayList; | ||
| import java.util.List; | ||
|
|
||
| public class CardGenerator { |
There was a problem hiding this comment.
카드 생성 로직을 따로 클래스로 위임해주셨네요!
그런데, 현재 오로지 CardDeck 을 위한 카드를 생성하고 있어서, 해당 객체가 다른 객체로부터 재사용될 일이 없을 것 같아요!
어떻게 생각하시나요? 객체를 분리하신 이유에 대해 궁금합니다!
There was a problem hiding this comment.
추상화 단위로 나누어야 된다고 생각했는데 카드덱만 관리하므로 굳이 객체를 분리할 필요 없을 것 같습니다. 합치겠습니다.
구현 도중에 미리 업로드합니다.
제 아내가 출산 전에 터키에 있는 마지막 시기라서 제가 이번에 집중을 할 수 없었습니다만 이번 미션은 객체지향적으로 짜보려고 노력해보고 있습니다. 최선을 다해 따라가보겠습니다만 1차 미션 리뷰를 혹시 하루만 더 늘려서 받으면 안될까요?
제가 시차 때문에 안그래도 바쁜데 미션 시작날과 끝나는 날 하루씩 해서 5일이면 이틀이 다른 분들보다 짧은 것 같네요....ㅜㅜ 3일만에 항상 구현해야돼서 빡빡합니다. 열심히 해서 다시 제출하겠습니다.